import axios from 'axios'
import { showSuccessToast, showFailToast } from 'vant';
import {getToken} from '../utils/token'
import router from '@/router';
import useStore from '../store/useStore';
import { resetLogin } from '../utils/localStorage';
import { removeToken } from '../utils/token';


//开发环境需要走代理服务器
let http = axios.create({
    baseURL:process.env.NODE_ENV==='production'?'http://8.218.112.99/ml/ml-mall/frontend':'/frontend',
    timeout:5000
})

//请求拦截器
http.interceptors.request.use(function(config){
   config.headers['Authorization'] = 'Bearer '.concat(getToken());
    return config
},function(err){
    return Promise.reject(err)
})
//响应拦截器
http.interceptors.response.use(function(response){
    let data = response.data
   
    if (data.code !== 1) {
        if (data.code === 0) {
            // 去调用其它接口，如果没有登录，就没有token
            // 服务器返回code是0，需要去登录，去/login
            // 如果你本来要去的页面就是/login  
            
            if (router.currentRoute.value.path !== '/login') {
                router.push('/login');
            }
        }
        if (data.code === 3) {
            // 通知
            showFailToast({
                type: 'danger',
                message: '用户名或密码错误',
                duration: 500,
            });
        } else {
            // 过期或未登录
            if (data.message === '请登录') {
                const userStore = useStore();
                // 过期或未登录重置用户仓库数据
                userStore.reset();
                // 重置本地数据
                resetLogin();
                // 删除token
                removeToken();
            }
            // 通知
            showFailToast({
                type: 'danger',
                message: data.message || '系统繁忙',
                duration: 500,
            });
        }
        return Promise.reject(data);
    }
    return response.data;
},function(err){
    showFailToast({
        message: '系统繁忙，请稍后再试',
        duration: 500,
    })
   return Promise.reject(err)
})

export default http